package cn.fuxue.hrms.common.base;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.databind.ObjectMapper;

import javax.jws.Oneway;
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
import java.util.HashMap;
import java.util.Map;

/**
 * @author:fuxue description:通用Entity
 */
public class BaseEntity {

    /**
     * 通用JSON反序列化方法（需子类继承）
     *
     * @param strings 前端传入的数值
     * @throws Exception 包含参数校验和反序列化异常
     */
    public void populateFromJson(Map<String,Object> params) throws Exception {

        String jsonStr = JSON.toJSONString(params);
        // 1. 统一空指针校验
        if (jsonStr == null || jsonStr.trim().isEmpty()) {
            throw new Exception("请求参数不能为空");
        }

        try {
            // 2. 使用线程安全的ObjectMapper
            ObjectMapper mapper = new ObjectMapper();
            // 3. 直接将JSON映射到当前对象（自动处理字段匹配）
            mapper.readerForUpdating(this).readValue(jsonStr);

        } catch (Exception e) {
            // 4. 统一异常处理（可细化异常类型）
            throw new Exception("参数解析失败: " + e.getMessage(), e);
        }
    };
}